iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0

表單是用戶與應用程序交互的主要手段之一,而表單數據的正確性對應用的運行至關重要。透過ASP.NET Core內建的驗證機制,我們可以輕鬆地對表單數據進行檢查,確保輸入的合法性與完整性。


1. 表單的基本處理

在ASP.NET Core中,表單數據的處理通常是通過控制器的動作方法來完成的。這些方法接收來自前端表單的數據,並進行相應的操作。以下是處理表單數據的基本步驟:

  1. 建立表單視圖

    首先,我們需要創建一個表單視圖,讓用戶能夠輸入數據。下面是一個簡單的表單示例,讓用戶輸入姓名和電子郵件:

    <form asp-action="Submit" method="post">
        <div>
            <label>Name</label>
            <input asp-for="Name" />
            <span asp-validation-for="Name"></span>
        </div>
        <div>
            <label>Email</label>
            <input asp-for="Email" />
            <span asp-validation-for="Email"></span>
        </div>
        <button type="submit">Submit</button>
    </form>
    

    在這個表單中,asp-for標記用於綁定模型屬性,而asp-validation-for用於顯示驗證錯誤信息。

  2. 處理表單提交
    接下來,在控制器中創建一個動作方法來處理表單提交。這個方法會接收表單數據,進行驗證,並處理有效的數據:

    [HttpPost]
    public IActionResult Submit(MyViewModel model)
    {
        if (ModelState.IsValid)
        {
            // 處理有效的表單數據
            // 比如保存數據到資料庫
            return RedirectToAction("Success");
        }
        // 如果驗證失敗,重新顯示表單
        return View(model);
    }
    

2. 驗證機制

ASP.NET Core 提供了豐富的驗證機制,可以確保用戶輸入的數據符合預期的格式。這些驗證規則可以應用於模型的屬性上。以下是一些常見的驗證特性:

  • Required:確保字段不為空
  • StringLength:限制字符串的長度
  • EmailAddress:驗證電子郵件地址格式
  • Range:限制數值的範圍

例如:

public class MyViewModel
{
    [Required(ErrorMessage = "Name is required")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Email is required")]
    [EmailAddress(ErrorMessage = "Invalid email address")]
    public string Email { get; set; }
}

在這個模型中,Name屬性是必需的,Email屬性不僅必需而且必須符合電子郵件格式。

3. 顯示驗證錯誤

在視圖中,我們可以使用asp-validation-for標記來顯示驗證錯誤消息:

<span asp-validation-for="Name" class="text-danger"></span>
<span asp-validation-for="Email" class="text-danger"></span>

這些標記會顯示與模型屬性相關的錯誤信息,讓用戶知道哪些輸入是無效的。

4. 小結

在這篇文章中,我們介紹了如何在ASP.NET Core中處理表單數據和進行驗證。通過使用ASP.NET Core提供的驗證機制,我們可以確保用戶輸入的數據是正確和完整的,從而提高應用的可靠性和用戶體驗。接下來,我們將探討如何管理資料庫遷移,進一步完善應用的功能。


上一篇
Day_8 建立基本的CRUD操作裡面的UD
下一篇
Day_10 管理資料庫遷移
系列文
ASP.NET Core的終極奧義:從零到無敵30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言